Computer systems are configured to include a collection of modules, components or other entities that take part in the operation of the system and that can affect its behavior in one or more ways. Such units can be considered the modules that make up the system and they are often implemented as software components. Software can be written in any of a number of programming languages and is generally used to cause a processor to execute specific instructions. However, after designing such a system it may be desirable to test one or more aspects thereof to verify whether it works, or will work, as intended.
Testing can include verifying some or all aspects of the system's operation, for example to verify that a result is obtained. For example, testing can be performed at a relatively low level to determine that basic units are able to communication with each other, without indicating whether the communication is correct, meaningful or complete. As another example, testing may be performed at a relatively high level to ascertain whether the quality of the communication is as intended or at least acceptable. In either of these examples, the outcome of a test can be used in modifying the existing system or in designing another, improved, system.
While specific kinds of testing were mentioned in the above examples, it is understood that a number of types of testing exist and can be performed for any of multiple purposes.